iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Modern Web

Laravel 9 漫遊,享受魔法般的極速網頁開發體驗系列 第 16

Day 16:另一種多語系的方式:談使用 json 處理多語系

  • 分享至 

  • xImage
  •  

能對文章加解密過後,網站的服務基本上都已經完成的差不多了。

一些常見的部分,比方說排程工作([Day 26] 定期的事件處理,聊 Laravel Schedule),在之前的文章已經說明過,並且 Laravel 9 對這些部分的作法改變並不太大,這邊就不重複介紹了。

多語系的處理部分,之前的文章 [Day 27] 多國語系的處理!聊 Laravel Localization 已經介紹過的方式,也就是利用多個 php 檔案分隔不同語系時該顯示的文字。

比方說我們可以宣告 lang/zh_tw/auth.php

/lang
    /en
        auth.php
    /zh_tw
        auth.php

加上以下內容

<?php

return [
    'failed' => '登入資料不符合',
    'throttle' => '嘗試登入太多次,請 :seconds 秒後再嘗試',
];

然後利用 trans() 函數協助我們使用

Route::get('/test', function(){
    return trans('auth.failed');
});

這樣的方式雖然挺方便,不過字數一多,要記得的內容也變得很多。

除了原本的方式,現在 Laravel 還支援使用 json 的方式來處理多語系的支援

我們將檔案宣告如下

/lang
    en.json
    zh_tw.json

zh_tw.json 檔案內,我們宣告

{
    "These credentials do not match our records.": "登入資料不符合",
    "Too many login attempts. Please try again in :seconds seconds.": "嘗試登入太多次,請 :seconds 秒後再嘗試",
}

這樣一來,使用的方式就變成了

Route::get('/test', function(){
    return trans('These credentials do not match our records.');
});

是不是好記多了呢?

Laravel 的文件說

Or, translation strings may be defined within JSON files that are placed within the lang directory. When taking this approach, each language supported by your application would have a corresponding JSON file within this directory. This approach is recommended for applications that have a large number of translatable strings:

所以,當你的網站需要轉換的文字越來越多時,Laravel 是建議使用 json 格式來處理的。

今天有關多語系使用 json 格式來協助我們處理字串的做法,就介紹到這邊。我們明天見!


上一篇
Day 15:更單純的加解密:談 Laravel 9 的 Accessor 和 Mutator
下一篇
Day 17:Laravel Middleware 簡介
系列文
Laravel 9 漫遊,享受魔法般的極速網頁開發體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言